package co.gov.medellin.ssti.sub.model.service.impl;

import java.util.Collection;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import co.gov.medellin.ssti.sub.model.dao.RepBeneficioOtorgadoDAO;
import co.gov.medellin.ssti.sub.model.dao.exception.DAOException;
import co.gov.medellin.ssti.sub.model.service.RepBeneficioOtorgadoService;
import co.gov.medellin.ssti.sub.model.vo.ProgramaVO;
import co.gov.medellin.ssti.sub.model.vo.RepAtributoVO;
import co.gov.medellin.ssti.sub.model.vo.RepBeneficioOtorgadoVO;
import co.gov.medellin.ssti.sub.model.vo.SubprogramaVO;
import co.gov.medellin.ssti.sub.model.vo.VflexVO;

@Service
public class RepBeneficioOtorgadoServiceImpl implements
		RepBeneficioOtorgadoService {
	@Autowired
	RepBeneficioOtorgadoDAO repBeneficioOtorgadoDAOImpl2;

	public Collection<RepBeneficioOtorgadoVO> findBeneficioOtorgadoByCriteria(
			RepBeneficioOtorgadoVO criteria) {
		try {
			return repBeneficioOtorgadoDAOImpl2
					.findBeneficioOtorgadoByCriteria(criteria);
		} catch (Exception e) {
			throw new DAOException(e);
		}
	}

	public Collection<RepBeneficioOtorgadoVO> findBeneficioOtorgadoConGestorByCriteria(
			RepBeneficioOtorgadoVO criteria) {
		try {
			return repBeneficioOtorgadoDAOImpl2
					.findBeneficioOtorgadoConGestorByCriteria(criteria);
		} catch (Exception e) {
			throw new DAOException(e);
		}
	}

	public Collection<VflexVO> findListaAtri(Long codeAtri) {
		try {
			return repBeneficioOtorgadoDAOImpl2.findListaAtri(codeAtri);
		} catch (Exception e) {
			throw new DAOException(e);
		}
	}

	public Collection<RepAtributoVO> findAtributoEspecificos(
			Long codeSubprograma) {
		try {
			return repBeneficioOtorgadoDAOImpl2
					.findAtributoEspecificos(codeSubprograma);
		} catch (Exception e) {
			throw new DAOException(e);
		}
	}

	public Collection<ProgramaVO> findProgramaByUserReport(Long codeUser,
			String userGroupName, Long codeArea) {
		try {
			return repBeneficioOtorgadoDAOImpl2.findProgramaByUserReport(
					codeUser, userGroupName, codeArea);
		} catch (Exception e) {
			throw new DAOException(e);
		}
	}

	public Collection<ProgramaVO> findProgramaWithGestorByUserReport(
			Long codeUser, String userGroupName, Long codeArea) {
		try {
			return repBeneficioOtorgadoDAOImpl2
					.findProgramaWithGestorByUserReport(codeUser,
							userGroupName, codeArea);
		} catch (Exception e) {
			throw new DAOException(e);
		}
	}

	public Collection<SubprogramaVO> findPermissionsReport(Long codeUser,
			String userGroupName, Long codePrograma, Long codeArea) {
		try {
			return repBeneficioOtorgadoDAOImpl2.findPermissionsReport(codeUser,
					userGroupName, codePrograma, codeArea);
		} catch (Exception e) {
			throw new DAOException(e);
		}
	}

}
